package com.zenithmind.library.service;

import com.zenithmind.common.result.Result;

/**
 * 图书统计服务接口
 * 遵循接口隔离原则：只包含统计相关的方法
 * 
 * @author ZenithMind
 * @since 2024-06-14
 */
public interface BookStatisticsService {

    /**
     * 增加图书借阅次数
     * 
     * @param bookId 图书ID
     * @return 更新结果
     */
    Result<Void> incrementBorrowCount(String bookId);

    /**
     * 更新图书评分
     * 
     * @param bookId 图书ID
     * @param rating 评分
     * @return 更新结果
     */
    Result<Void> updateBookRating(String bookId, Double rating);

    /**
     * 增加图书评价数量
     * 
     * @param bookId 图书ID
     * @param rating 评分
     * @param isPositive 是否好评
     * @return 更新结果
     */
    Result<Void> addBookReview(String bookId, Integer rating, boolean isPositive);

    /**
     * 移除图书评价
     * 
     * @param bookId 图书ID
     * @param wasPositive 是否为好评
     * @return 更新结果
     */
    Result<Void> removeBookReview(String bookId, boolean wasPositive);

    /**
     * 增加图书浏览次数
     * 
     * @param bookId 图书ID
     * @return 更新结果
     */
    Result<Void> incrementViewCount(String bookId);

    /**
     * 增加图书收藏次数
     * 
     * @param bookId 图书ID
     * @return 更新结果
     */
    Result<Void> incrementFavoriteCount(String bookId);

    /**
     * 减少图书收藏次数
     * 
     * @param bookId 图书ID
     * @return 更新结果
     */
    Result<Void> decrementFavoriteCount(String bookId);

    /**
     * 增加图书分享次数
     * 
     * @param bookId 图书ID
     * @return 更新结果
     */
    Result<Void> incrementShareCount(String bookId);
}
